#ifndef TABLESYMBOLEMANAGER_HPP
#define TABLESYMBOLEMANAGER_HPP
#include <iostream>
#include <string>
#include <vector>
#include "Type.hpp"
#include "Symbole.hpp"
#include "Niveau.hpp"
#include "TableSymb.hpp"

using namespace std;


class TableSymboleManager
{
	private:

  		vector<Niveau> niveaux;
  		unsigned int numNiveau;
  		bool beginState;
  		TableSymboleManager();

	public:

  		// Singleton
  		static TableSymboleManager& getInstanceOf(){
    		static TableSymboleManager instance;
    		return instance;
    	}
  		void beginProgram(TableSymb*);
  		void begin(string);
  		void end();
  		void print();
  		Symbole* find(unsigned int);
  		TableSymb* getCurrentTableSymb();

  		~TableSymboleManager();
};

#endif
